package com.itheima.request;

import com.itheima.pojo.User;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.Map;

@WebServlet("/paramsMap")
public class RequestParamtersMapServlet extends HttpServlet {
    /*
    request.getParameter(键名)  根据请求参数的名字 获取对应的值
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       // 在这里处理 因为是post请求

        // 只有post请求才有中文乱码 get没有
        request.setCharacterEncoding("utf-8");

//        //数据是键值对 所以可以根据键找值
//        String username = request.getParameter("username");
//        String password = request.getParameter("password");
//        String sex = request.getParameter("sex");
//        String city = request.getParameter("city");
//        String[] hobby = request.getParameterValues("hobby");
//        String info = request.getParameter("info");
//
//        User user = new User();
//        System.out.println("封装之前对象数据:"+user);
//          //完成封装
//       user.setUsername(username);
//       user.setPassword(password);
//       user.setSex(sex);
//       user.setHobby(hobby);
//       user.setCity(city);
//       user.setInfo(info);

        //获取方面能不能简化 可以
        Map<String, String[]> parameterMap = request.getParameterMap();
        //得到一个map集合  键就是我们表单数据name  值就是表单的值
        //  String[]  因为前端传递数据可能有多值 所以使用 字符串数组解决
      //构建对象 set操作能不能简化 能 但是需要借助第三方jar包
        //  BeanUtils jar包 --工具类 BeanUtils
        // 有个方法 叫 populate方法 可以实现 将map集合中数据封装到一个bean里面
        User user = new User();
        System.out.println("封装之前对象数据:"+user);
        try {
            BeanUtils.populate(user,parameterMap);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

        System.out.println("封装之后对象数据:"+user);






    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}
